home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Libraries / TurboTCP 1.0.1 / TurboTCP.source / CTCPAsyncCall.h < prev    next >
Text File  |  1993-12-10  |  2KB  |  72 lines

  1. /*
  2. ** CTCPAsyncCall.h
  3. **
  4. **    TurboTCP support library
  5. **    TCP asynchronous call class
  6. **
  7. **    Copyright © 1993, FrostByte Design / Eric Scouten
  8. **
  9. */
  10.  
  11. #pragma once
  12.  
  13. #ifndef TurboTCPHeaders
  14.     #include <CObject.h>
  15.     #include <TCPPB.h>
  16.     #include "TurboTCP.const.h"
  17. #endif
  18.  
  19.  
  20. CLASS CTCPStream;
  21.  
  22. /*______________________________________________________________________
  23. **
  24. ** CTCPAsyncCall
  25. **
  26. **    This object encapsulates each asynchronous call to MacTCP. This method is used so that
  27. **    the call’s I/O block may persist beyond the scope of the method call which originates the
  28. **    call (these methods are located in CTCPStream).
  29. **
  30. **    NOTE: All interaction with CTCPAsyncCalls should be through CTCPStream. No other class
  31. **    should have a reason to use this object, nor should this object be subclassed.
  32. **
  33. */
  34.  
  35. class CTCPAsyncCall : public CObject {
  36.  
  37. private:
  38.     CTCPStream        *itsStream;            // the stream that requested this call
  39.     TurboTCPQElem        qEntry;                // completion queue handling
  40.     TCPiopb            itsParamBlock;            // the parameter block
  41.     CObject            *bypassTarget;        // who to call on receive-bypass procedure
  42.     RcvBypassProc        bypassProc;
  43.     
  44.  
  45.     // initialize/destroy call object
  46.     
  47. public:
  48.     void ITCPAsyncCall (CTCPStream *theStream);
  49.     OSErr DoAsyncCall (short theCsCode, TCPiopb *theParamBlockPtr);
  50.  
  51.  
  52.     // process TCP call completion
  53.     
  54.     void ProcessCompletion (void);
  55. protected:
  56.     Boolean Dispatch (void);
  57.     Boolean DispatchNoCopyRcv (void);
  58.  
  59.  
  60.     // bypass procedure linkage
  61.  
  62. public:    
  63.     void SetRcvBypassProc (CObject *aRcvBypassTarget, RcvBypassProc aRcvBypassProc);
  64.  
  65.  
  66.     // completion procedure
  67.     
  68. private:
  69.     static pascal void CompletionProc (void);
  70.     
  71. };
  72.